Communication of data over computer networks, particularly the Internet, has become an important, if not essential, way for many organizations and individuals to disseminate information. The Internet is a global network connecting millions of computers using a client-server architecture in which any computer connected to the Internet can potentially receive data from and send data to any other computer connected to the Internet. The Internet provides a variety of methods in which to communicate data, one of the most ubiquitous of which is the World Wide Web. Other methods for communicating data over the Internet include e-mail, usenet newsgroups, telnet and FTP.
The World Wide Web is a system of Internet servers, typically called “web servers”, that support the documents and applications present on the World Wide Web.
Documents, known as web pages, may be transferred across the Internet according to the Hypertext Transfer Protocol (“HTTP”) while applications may be run by a Java virtual machine present in an internet browser. Web pages are often organized into web sites that represent a site or location on the World Wide Web. The web pages within a web site can link to one or more web pages, files, or applications at the same web site or at other web sites. A user can access web pages using a browser program and can “click on” links in the web pages being viewed to access other web pages.
Each time the user clicks on a link, the browser program generates a request and communicates it to a web server hosting web pages or applications associated with the web site. The web server retrieves the requested web page or application from an application server or Java server and returns it to the browser program. Web pages and applications can provide a variety of content, including text, graphics, interactive gaming and audio and video content.
Because web pages and associated applications can display content and receive information from users, web sites have become popular for enabling commercial transactions. As web sites become more important to commerce, businesses are increasingly interested in quickly providing responses to user's requests. One way of accelerating responses to requests on a web site is to cache the web pages or applications delivered to the requesting user in order to allow faster access time to this content when it is next requested.
Current caching methods, however, typically provide very limited functionality. This is because they only provide cached content, but do not link the cached content to specific aspects of each individual request to which the content is responsive, such as the user's locale, or browser capabilities. Additionally, when an identical request is presented content may be served from the cache, even though this content may have been updated at the application server in the intervening time span; or content responsive to the request must once again be generated and cached, delaying the response to the request.
Thus, while current web site caching systems may cache web pages and applications, they provide little or no information which relates the cached page or application to the associated request. In other words, current caching systems may not have keys individually tailored to the web page or application being cached. Furthermore, current web caching systems do not have the ability to cache and deliver pages and applications based upon a user's browser's capabilities. Therefore, content cannot be specifically tailored to both a user's needs and capabilities. In addition, current caching methodologies do not provide an adequate method for updating content stored in the cache without receiving an identical request from the user.
Thus, while current caching system allows some degree of performance enhancement, they provide neither a framework for a caching mechanism based upon request parameters which may be tailored and expanded to suit the needs of the web site provider nor a way to update content stored in the cache without receiving a request from a user.